1 Časté problémy

    1.0.1 Fonty a unicode

    Nezobrazují-li se Vám správně komentáře ve zdrojovém kódu (zejména matematika nebo obrázky), máte pravděpodobně nekompletní font (písmo). Pro editování zdrojového kódu doporučujeme font Iosevka, který je volně ke stažení na stránce typeof.net/Iosevka.

    1.0.2 [NBSP] v PyCharm

    Chcete-li předejít tomu, aby Vám PyCharm místo (nedělitelných) mezer v komentářích zobrazoval řetězec [NBSP], můžete si změnit nastavení takto: v HelpFind Action napište do vyhledávání „Registry“, dále pak vyhledejte nastavení editor.show.special.chars a toto vypněte.

    2 Inštalácia SW

    Tento návod popisuje, ako nainštalovať softvér, ktorý budete v tomto predmete potrebovať. Podľa vlastného uváženia môžete používať ľubovoľný iný softvér, ale môže sa samozrejme stať, že Vám s ním nebudeme schopní pomôcť.

    2.1 Thonny

    Na programovanie v Pythone odporúčame program Thonny – jedná sa o vývojové prostredie určené na výuku programovania a je vhodné pre začiatočníkov aj mierne pokročilých. Thonny automaticky nainštaluje aj interpret jazyka Python (vo verzii 3.10.11; pre potreby IB111 je potrebná verzia 3.10 alebo novšia). Program si môžete stiahnuť z jeho oficiálnej stránky.

    2.1.1 Windows

    Zo stránky uvedenej vyššie si stiahnite inštalátor. Inštalátor je .exe súbor, ktorý by ste po stiahnutí mali nájsť v priečinku Stiahnuté súbory (názov začína slovom thonny).
    Po spustení inštalátoru pokračujte nasledujúcimi krokmi: Ďalej potvrďte aplikácii povolenie vytvárať zmeny. Potom stlačte tlačidlo Next. Potvrďte, že súhlasíte s licenčnými podmienkami a opäť pokračujte tlačidlom Next: V nasledujúcom kroku zvolíte, do akého umiestnenia sa má Thonny nainštalovať. Môžte bez problémov ponechať predvolenú voľbu. Pokračujte tlačidlom Next: Výber Start Menu priečinku v nasledujúcom kroku tiež môžte zachovať predvolený a ďalej pokračovať tlačidlom Next. Ďalej zvoľte, či chcete, aby Vám inštalátor vytvoril na ploche skratku k Thonny a pokračujte tlačidlom Next: V nasledujúcom kroku pokračujte tlačidlom Install: O pár minút bude inštalácia hotová. Na koniec ju ešte potvrďťe tlačidlom Finish.

    2.1.2 Linux

    Doporučený způsob instalace je použít metodu „Installing prebuilt Thonny+Python bundles“ ze stránek Thonny. Touto metodou si zaručíte, že nebudete mít problémy s instalací pluginu pro EduLint (viz níže). V příkazovém řádku napište:
    bash <(curl -s https://thonny.org/installer-for-linux)
    K tomu je třeba mít předem nainstalován balík curl. Nemáte-li curl, ale máte wget, můžete alternativně zkusit:
    bash <(wget -O - https://thonny.org/installer-for-linux)
    Po skončení instalace byste měli mít Thonny v nabídce aplikací. Instalační skript vám zároveň napíše cestu k instalované binárce pro spuštění z příkazové řádky.

    2.1.3 macOS

    Stiahnite inštalačný program zo stránky vyššie a nainštalujte obvyklým spôsobom.

    2.2 EduLint

    EduLint je nástroj, který detekuje různé druhy programátorských chyb, od nevhodných programovacích konstrukcí přes porušení stylistických konvencí po některé časté problémy s kvalitou kódu. K řadě nedostatků je také schopen objasnit, proč je daný problém vhodné řešit, a na ukázkových kódech ilustrovat, jak ho lze vyřešit.
    Sami můžete EduLint používat jedním ze tří způsobů: nainstalovat si ho do Thonny (doporučeno), skrz webového rozhraní nebo nainstalovat si ho jako Python balíček pomocí pip.
    V tomto návodu popíšeme instalaci do Thonny.

    2.2.1 Thonny-EduLint

    Spusťte Thonny a proveďte v něm následující kroky:
    1. ToolsManage plug-ins... → vyhledejte thonny-edulint → vyberte thonny-edulint ze seznamu výsledků → stiskněte tlačítko Install
    2. Zavřete a znovu otevřete Thonny
    Po novém otevření Thonny byste měli nově vidět ikonku koštěte v hlavní liště. Že vše funguje si můžete vyzkoušet tak, že v Thonny otevřete libovolný Python soubor a analýzu spustíte buď kliknutím na ikonku koštěte, nebo klávesovou zkratkou F9.
    EduLint lze spustit pouze na uloženém souboru. Pokud tedy vytváříte úplně nový soubor, nezapomeňte ho uložit, než spustíte analýzu. Pokud otvíráte již existující soubor, EduLint vždy soubor před analýzou automaticky uloží na disk.
    A jak případně později upgradovat EduLint na novější verzi? Postup je stejný jako při instalaci, pouze se Vám místo tlačítka Install zobrazí tlačítko Upgrade.

    2.2.2 Použití v IB111

    IB111 vyžaduje pro EduLint vlastní konfiguraci, dodávanou spolu s kostrami příkladu v souboru ib111.toml. To, že používáte správnou konfiguraci, poznáte tak, že po kontrole souboru se v EduLint tabu píše "used configuration: ib111.toml". Pokud tab neobsahuje žádný text začínající "used configuration", spusťte nejdřív kontrolu kódu. Pokud tab obsahuje například text "used configuration: default", pak správnou konfiguraci nepoužíváte. Pokud nepoužíváte správnou konfiguraci, zkontrolujte, že soubor ib111.toml je obsažený ve stejném adresáři, jako soubor, který právě kontrolujete. Případně můžete do zdrojového kódu vložit řádek "# edulint: config=c:\cesta\ke\stazenemu\ib111.toml" (s cestou, na které máte soubor ib111.toml uložený ve svém počítači).
    EduLint reportuje dva typy problémů: error a warning. Všechny problémy typu error je nutné vyřešit před úspěšným odevzdáním. Problémy typu warning můžou sloužit ke zlepšení stylu nebo odhalení chyby, ale jejich zapracování není vyžadované. Reportování problémů typu warning je možné vypnout vložením řádku "# edulint: set-groups=" do zdrojového kódu. Jejich vypnutí ovšem nedoporučujeme.

    2.3 Mypy

    Mypy je nástroj na statickú kontrolu typov. Od kapitoly 05 v zbierke budeme v tomto predmete vyžadovať, aby na Vami odovzdaných kódoch úspešne prešla kontrola nástrojom Mypy. Výsledok tejto kontroly uvidíte spolu s výsledkami ostatných testov v poznámkovom bloku v IS. Ak používate prostredie Thonny, program Mypy máte automaticky k dispozícii.

    3 Základné použitie SW

    3.1 Thonny

    Na programovanie v Pythone odporúčame vývojové prostredie Thonny. Jedná sa o jednoduché prostredie vhodné pre začiatočníkov. Thonny je nainštalované vo všetkých učebniach, v ktorých prebiehajú cvičenia. Návod na jeho inštaláciu na vlastný počítač nájdete vyššie.

    3.1.1 Základy

    Pomocou ViewFiles môžete prehľadávať priečinky a otvárať jednotlivé súbory. Tento režim je ideálny na vypracovávanie úloh zo zbierky.
    Aktuálny súbor spustíte pomocou klávesy F5, zeleného tlačidla Play alebo pomocou RunRun current script. Bežiaci program zastavíte červeným tlačidlom STOP, alebo pomocou RunStop/Restart backend.
    Ak Váš program úspešne skončí, v shelli vľavo dole sa neobjavia žiadne chybové hlášky a zobrazí sa nový prompt.
    Ak Váš program cyklí, chybové hlášky sa tiež nezobrazujú, ale nezobrazí sa ani nový prompt v shelli.
    Ak Váš program skončil s chybou, v shelli vľavo dole uvidíte príslušné chybové hlásenie obsahujúce názov chyby a číslo riadka, na ktorom sa chyba nachádza.
    Rozpracovaný súbor uložíte pomocou pomocou Súboruložiť, prípadne Ctrl+S. Pozor: Thonny súbory automaticky ukladá len pri spustení. Pred spustením Mypy, Flake8, alebo pred odovzdaním súboru sa uistite, že máte jeho aktuálnu verziu uloženú.

    3.1.2 Ďalšie tipy

    Pri hľadaní chýb v programe Vám môže pomôcť debugger, ktorý slúži na krokovanie programu a priebežné sledovanie hodnôt premenných. Debugger spustíte pomocou tlačidla s chrobákom, alebo jedného z RunDebug script. Postupovať v programe je možné jedným z troch typov krokov. Debugger v Thonny navyše zobrazuje aj postupné vyhodnocovanie výrazov a volané funkcie zobrazuje vždy v novom okne (máte tak prehľad o tom, ktorá funkcia volala ktorú a v akom kontexte).
    V tomto predmete je vyžadované, aby odovzdávané programy prešli kontrolou Flake8 a neskôr aj Mypy (viz. nižšie). Určitú časť týchto kontrol pokrýva v Thonny Assistant.
    Pozor: Varovania Assitant nepokrývajú všetky chyby, ktoré môže Mypy s prepínačom --strict hlásiť. Podobne varovania na chyby štýlu nemusia 100% korešpondovať s programom Flake8. Napriek tomu je Assistant užitočný a môže Vám pomôcť predísť niektorým typom chýb. Assistant zobrazíte pomocou ViewAssistant:

    3.2 EduLint

    Jak už bylo řečeno v sekci Inštalácia SWEduLint tohoto dokumentu, EduLint lze po instalaci do Thonny spustit kliknutím na ikonku koštěte. Více informací najdete v uvedené sekci.

    3.3 Mypy

    Najprv spustite Thonny a v ňom shell (ToolsOpen system shell...). V shelli zadajte príkaz python -m mypy --strict nazov_suboru. Tento spustí kontrolu nástrojom Mypy na súbore nazov_suboru.
    Pozor: Mypy spúšťajte vždy s modifikátorom --strict, inak typové chyby vo funkciách bez anotácií ignoruje.
    Mypy po spustení na programe s typovými chybami vypíše nájdené chyby na výstup priamo do shellu, podobne ako Flake8. Vypisuje každú chybu na nový riadok, pričom najprv uvádza číslo riadku s príslušnou chybou a za ním aj slovný opis chyby. Príklad výstupu Mypy na programe s chybami:
    Po spustení na programe neobsahujúcom typové chyby Mypy vypíše do shellu, že v súbore neboli nájdené žiadne chyby. Vyzerá to nasledovne:

    4 Odovzdávanie príprav

    4.1 Kostry a vypracovanie

    Kostry riešení príkladov zo zbierky nájdete v študijných materiáloch v ISe: StudentIB111Studijní materályUčební materiály. Kostry k danej kapitole zbierky sa vždy nachádzajú v adresári s korešpondujúcim číslom. Na adresár kliknite pravým tlačidlom a zvoľte možnosť Stáhnout jako ZIP. Na obrázku vidíte, ako stiahnuť kostry ku kapitole 01:
    Riešenia vpisujte priamo do pripravených súborov. V kostre riešenia sa nachádzajú pripravené hlavičky požadovaných funkcií, Vaše riešenie vpisujte do tela funkcie tak, že ním nahradíte príkaz pass.
    Pozor: Aby ste mohli úspešne odovzdať príklad, nemeňte názov súboru! Odovzdávajú sa len príklady typu p, tj. také, ktorých názov súboru začína pN_.

    4.2 Odovzdanie

    Týždenné prípravy odovzdávajte do pripravenej odevzdávárny v ISe. Nájdete ju v StudentIB111Odevzdávárny. Prípravu pre daný týždeň odovzdávajte do odevzdávárny s číslom korešpondujúcim s číslom príslušnej kapitoly v zbierke.
    Do odevzdávárny sa príklady vkladajú pomocou Soubor - nahrát.
    Vyberte príslušný súbor a potvrďte tlačidlom vložiť.
    Názov súboru nijako nemeňte! IS si k názvu automaticky predradí Vaše meno a UČO.
    Ak chcete niektorý z príkladov odovzdať znovu, jednoducho ho znovu nahrajte do odevzdávárny. Pri vkladaní označte, že súbory s rovnakým názvom majú byť prepísané. Súborov môžte do odevzdávárny vkladať viacero naraz.
    Pred odovzdaním nezabudnite vždy uložiť aktuálnu verziu Vášho programu!

    4.3 Poznámkové bloky

    Výsledok Vášho odovzdania uvidíte do pár minút v poznámkových blokoch v ISe. Ak sa Vám výsledok v bloku nezobrazí do pol hodiny a ste presvedčení, že chyba nebola na Vašej strane, nahláste prosím problém v diskusnom fóre v ISe.
    K výsledkom odovzdanie sa dostanete cez StudentIB111Poznámkové bloky. Bloky sú organizované podľa čísel týždňov (na obrázku zvýraznené zelenou). Obsahujú informáciu o tom, ku ktorému odovzdaniu sa vypísaný výsledok testov viaže (vyznačené modrou). Blok je ďalej organizovaný podľa jednotlivých súborov odovzdaných do odevzdávárny (vyznačené bordovou). K príslušnému súboru vidíte, či na ňom prešli testy a prípadne ktoré testy zlyhali (vyznačené žltou). Na nasledovnom obrázku je blok z odovzdania príkladu p1_sequence, ktorý obsahoval štýlové chyby (neprešiel test Flake8).
    Vždy, keď niečo vložíte do odevzdávárny, vyhodnotí sa nanovo celý jej obsah. Poznámkový blok v ISe obsahuje výsledky testov na poslednom odovzdaní. Počíta sa Vám výsledok najlepšieho odovzdania, tj. nie nutne toho odovzdania, ku ktorému sa viaže aktuálny obsah bloku. Na poslednom riadku príslušného bloku vždy vidíte čas a výsledok najlepšieho odovzdania (na obrázku nižšie vyznačené modrou).
    Pokiaľ na nejakom Vašom riešení neprejde kontrola Flake8, ďalšie testy (asserty priložené v kostre riešenia) sa nevyhodnotia. Na ďalšom obrázku vidíte odovzdanie, ktoré je zároveň aj najlepším odovzdaním a obsahuje príklad p1_sequence, na ktorom prešla kontrola Flake8, ale neprešli testy (vypisuje sa prvý assert, ktorý neprešiel); príklad p3_triples, na ktorom neprešla kontrola Flake8 (tj. o výsledkoch príkazov assert nič neviete) a príklad p5_fibsum, na ktorom úspešne prešli všetky testy aj Flake8.